package com.work.yshop.mvp.contract;

import com.work.yshop.mvp.BasePresenter;
import com.work.yshop.mvp.BaseView;

/**
 * 注册功能的MVP契约接口
 */
public interface RegisterContract {

    /**
     * 注册页面View接口
     */
    interface View extends BaseView {
        /**
         * 验证码发送成功
         * @param code 验证码
         */
        void onVerificationCodeSent(String code);

        /**
         * 验证码倒计时更新
         * @param seconds 剩余秒数
         */
        void updateCountDownTimer(int seconds);

        /**
         * 倒计时结束
         */
        void onCountDownFinished();

        /**
         * 显示手机号错误
         * @param message 错误信息
         */
        void showPhoneError(String message);

        /**
         * 显示验证码错误
         * @param message 错误信息
         */
        void showVerificationCodeError(String message);

        /**
         * 显示密码错误
         * @param message 错误信息
         */
        void showPasswordError(String message);

        /**
         * 显示确认密码错误
         * @param message 错误信息
         */
        void showConfirmPasswordError(String message);

        /**
         * 注册成功
         */
        void onRegisterSuccess();
    }

    /**
     * 注册页面Presenter接口
     */
    abstract class Presenter extends BasePresenter<View> {
        /**
         * 获取验证码
         * @param phone 手机号
         */
        public abstract void getVerificationCode(String phone);

        /**
         * 注册
         * @param phone 手机号
         * @param verificationCode 验证码
         * @param password 密码
         * @param confirmPassword 确认密码
         * @param isAgreementChecked 是否同意协议
         */
        public abstract void register(String phone, String verificationCode, String password, 
                                    String confirmPassword, boolean isAgreementChecked);

        /**
         * 开始倒计时
         */
        public abstract void startCountDown();

        /**
         * 停止倒计时
         */
        public abstract void stopCountDown();
    }
} 